package com.zhongfeng.api.modules.front.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhongfeng.api.modules.front.vo.FrontVo;
import com.zhongfeng.api.modules.front.vo.NumberVo;
import com.zhongfeng.api.modules.front.vo.params.FrontParams;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 *
 * @author blueCat
 * @since 2022/2/24
 */
public interface FrontMapper {

    /**
     * 查询上游
     *
     * @return
     */
    List<FrontVo> queryAllFront(Page<FrontVo> page, @Param("params") FrontParams params);

    /**
     * 查询全部上游不分页
     *
     * @return
     */
    List<FrontVo> queryAllFrontWithoutPage();

    /**
     * 添加上游
     *
     * @param params
     * @return
     */
    int addFront(@Param("params") FrontParams params);

    /**
     * 删除上游
     *
     * @param id
     * @return
     */
    int deleteFront(Integer id);

    /**
     * 更新上游
     *
     * @param params
     * @return
     */
    int updateFront(@Param("params") FrontParams params);

    int addANumber(@Param("numberList") List<String> numberList,@Param("frontId") int frontId);

    /**
     * 查询自增长id
     */
    Integer queryId();

    /**
     * 删除A号
     * @param id
     * @return
     */
    int deleteNumber(Integer id);

    /**
     * 删除A号
     * @param idList
     * @return
     */
    int deleteNumberList(List<Integer> idList);

    /**
     * 查询全部A号码
     * @param page
     * @param params
     * @return
     */
    List<NumberVo> queryAllNumber(Page<FrontVo> page, @Param("params") FrontParams params);

    /**
     * 查询上游属性
     * @return
     */
    List<FrontVo> queryFrontProperty();

    /**
     * 查询全部A号码不分页
     * @param params
     * @return
     */
    List<NumberVo> queryAllNumberWithoutPage(@Param("params") FrontParams params);

    /**
     * 查询全部上游IP
     * @param frontIdList
     * @return
     */
    List<String> queryAllFrontIp(List<Integer> frontIdList);

    /**
     * 查询全部落地信息
     * @param page
     * @param params
     * @return
     */
    List<FrontVo> queryAllFronts(Page<FrontVo> page, FrontParams params);

    /**
     * 查询全部号码信息
     * @return
     */
    List<NumberVo> queryAllNumberInfo();

    List<NumberVo> queryFrontNumber(Integer frontId);

    /**
     * 查询全部落地分组
     * @return
     */
    List<Integer> queryFrontGroup();
}
